package br.com.edoc.controller.cadastro;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.edoc.controller.ControllerPadrao;
import br.com.edoc.entidade.Usuario;
import br.com.edoc.excecoes.ExceptionApplication;
import br.com.edoc.excecoes.ExceptionValidador;
import br.com.edoc.gerentes.GerenteControleAcesso;
import br.com.edoc.gerentes.GerenteSeguranca;

@ManagedBean(name="alterarSenhaUsuario")
@SessionScoped
public class AlterarSenhaUsuarioController extends ControllerPadrao{
	/**
	 * 
	 */
	private static final long serialVersionUID = -1182367992587745412L;
	private Usuario usuario;
	
	private String senha;
	
	private String confirmacaoSenha;
	
	public AlterarSenhaUsuarioController(Usuario usuario) {
		super();
		this.usuario = usuario;
		this.getSessionScope().put("alterarSenhaUsuario", this);
	}
	
	
	public String validaSenhas(){
		boolean  erro=false;
		if(getSenha()==null || getSenha().equals("")){
			addAlertMessage("O campo senha é obrigatório");
			erro = true;
		}		
		if(!getSenha().equals(getConfirmacaoSenha())){
			addAlertMessage("As duas senhas informadas não conferem");
			erro = true;
		}
		if(getSenha().length()<5){
			addAlertMessage("A senha tem que possuir no mínimo 5 letras");
			erro = true;
		}
		if(!erro){
			GerenteControleAcesso gc = getAtendente().chamaGerenteControleAcesso();
			try {
				getUsuario().setPrimeiroAcesso(false);
				getUsuario().setSenha(GerenteSeguranca.encriptaSenha(getSenha()));
				gc.alterar(getUsuario());
				return "index.jsf";
			} catch (ExceptionApplication e) {
				// TODO Auto-generated catch block
				addErroMessage(e.getMessage());
			} catch (ExceptionValidador e) {
				// TODO Auto-generated catch block
				addErroMessage(e.getMessage());
			}
		}
		return "alteraSenha.jsf";
	}

	public Usuario getUsuario() {		
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getConfirmacaoSenha() {
		return confirmacaoSenha;
	}

	public void setConfirmacaoSenha(String confirmacaoSenha) {
		this.confirmacaoSenha = confirmacaoSenha;
	}
	
	
	
}
